flattenlistmodel: Make the constructor transfer full
authorMatthias Clasen <mclasen@redhat.com>
Sun, 26 Jul 2020 14:53:55 +0000 (10:53 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 26 Jul 2020 22:02:44 +0000 (18:02 -0400)
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.

Update all callers.

12 files changed:
demos/constraint-editor/constraint-view.c
gtk/gtkcustompaperunixdialog.c
gtk/gtkflattenlistmodel.c
gtk/gtkfontchooserwidget.c
gtk/gtkpagesetupunixdialog.c
gtk/gtkprintunixdialog.c
gtk/gtkshortcutmanager.c
gtk/inspector/controllers.c
gtk/inspector/object-tree.c
testsuite/gtk/filterlistmodel-exhaustive.c
testsuite/gtk/flattenlistmodel.c
testsuite/gtk/sortlistmodel-exhaustive.c

index c9d08acab84e70ef7af3b2d91720cedc1fedceb5..a3fbd447bfd3df84c44e9830b2c6e72ee22c4c7d 100644 (file)
@@ -174,28 +174,29 @@ constraint_view_init (ConstraintView *self)
   manager = gtk_constraint_layout_new ();
   gtk_widget_set_layout_manager (GTK_WIDGET (self), manager);
 
-  all_children = gtk_widget_observe_children (GTK_WIDGET (self));
-  all_constraints = gtk_constraint_layout_observe_constraints (GTK_CONSTRAINT_LAYOUT (manager));
   guides = gtk_constraint_layout_observe_guides (GTK_CONSTRAINT_LAYOUT (manager));
+
+  all_constraints = gtk_constraint_layout_observe_constraints (GTK_CONSTRAINT_LAYOUT (manager));
   filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
   constraints = (GListModel *)gtk_filter_list_model_new (all_constraints, filter);
   g_object_unref (filter);
+  g_object_unref (all_constraints);
+
+  all_children = gtk_widget_observe_children (GTK_WIDGET (self));
   filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
   children = (GListModel *)gtk_filter_list_model_new (all_children, filter);
   g_object_unref (filter);
+  g_object_unref (all_children);
 
   list = g_list_store_new (G_TYPE_LIST_MODEL);
   g_list_store_append (list, children);
   g_list_store_append (list, guides);
   g_list_store_append (list, constraints);
-  self->model = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (list)));
   g_object_unref (children);
   g_object_unref (guides);
   g_object_unref (constraints);
-  g_object_unref (all_children);
-  g_object_unref (all_constraints);
-  g_object_unref (list);
 
+  self->model = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (list)));
 
   controller = (GtkEventController *)gtk_gesture_drag_new ();
   g_signal_connect (controller, "drag-begin", G_CALLBACK (drag_begin), self);
index 6940fdf12aa0790cc40d0690bcdd7cc0de09f29f..501331c99b4eb3fbb3da3fad8c6904e17ace9a1a 100644 (file)
@@ -322,7 +322,6 @@ gtk_custom_paper_unix_dialog_init (GtkCustomPaperUnixDialog *dialog)
   g_object_unref (printer_list);
 
   full_list = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (printer_list_list)));
-  g_object_unref (printer_list_list);
 
   filter = gtk_custom_filter_new (match_func, NULL, NULL);
   dialog->printer_list = G_LIST_MODEL (gtk_filter_list_model_new (full_list, filter));
index f4398d853c0a901c4452eb8fb97234de7c50b1a6..cea983f8da4c9292aa203b662e2e5fcc5a6876c4 100644 (file)
@@ -425,7 +425,7 @@ gtk_flatten_list_model_init (GtkFlattenListModel *self)
 
 /**
  * gtk_flatten_list_model_new:
- * @model: (nullable) (transfer none): the model to be flattened
+ * @model: (nullable) (transfer full): the model to be flattened
  *
  * Creates a new #GtkFlattenListModel that flattens @list.
  *
@@ -442,6 +442,9 @@ gtk_flatten_list_model_new (GListModel *model)
                          "model", model,
                          NULL);
 
+  /* we consume the reference */
+  g_clear_object (&model);
+
   return result;
 }
 
index e56b13ad420522308ecc72ae5209ccf3fa7c3aa5..7558fa1bce8ec775c1f74600206c98a7ff157afa 100644 (file)
@@ -784,7 +784,7 @@ update_fontlist (GtkFontChooserWidget *self)
   if ((self->level & GTK_FONT_CHOOSER_LEVEL_STYLE) == 0)
     model = g_object_ref (G_LIST_MODEL (fontmap));
   else
-    model = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (fontmap)));
+    model = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (g_object_ref (fontmap))));
   gtk_filter_list_model_set_model (self->filter_model, model);
   g_object_unref (model);
 }
index c0743deaee4d0cffda4f114a2e4039ee50fe1ec5..3964a1aa60ca81cc874035b06f997047867e56a1 100644 (file)
@@ -308,7 +308,6 @@ gtk_page_setup_unix_dialog_init (GtkPageSetupUnixDialog *dialog)
   g_list_store_append (store, dialog->manage_papers_list);
   paper_size_list = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (store)));
   gtk_drop_down_set_model (GTK_DROP_DOWN (dialog->paper_size_combo), paper_size_list);
-  g_object_unref (store);
   g_object_unref (paper_size_list);
 
   /* Do this in code, we want the translatable strings without the markup */
index 26a25a6cfce5e705e05de7375ac73f7c402303c3..3c88f4cc25395cbda5168b925e8e2bc87d9192c1 100644 (file)
@@ -807,7 +807,6 @@ gtk_print_unix_dialog_init (GtkPrintUnixDialog *dialog)
   g_list_store_append (store, dialog->manage_papers_list);
   paper_size_list = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (store)));
   gtk_drop_down_set_model (GTK_DROP_DOWN (dialog->paper_size_combo), paper_size_list);
-  g_object_unref (store);
   g_object_unref (paper_size_list);
 
   /* Load backends */
@@ -1037,7 +1036,6 @@ load_print_backends (GtkPrintUnixDialog *dialog)
 {
   GList *node;
   GListStore *lists;
-  GListModel *model;
 
   lists = g_list_store_new (G_TYPE_LIST_MODEL);
 
@@ -1053,11 +1051,7 @@ load_print_backends (GtkPrintUnixDialog *dialog)
       g_list_store_append (lists, gtk_print_backend_get_printers (backend));
     }
 
-  model = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (lists)));
-
-  g_object_unref (lists);
-
-  return model;
+  return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (lists)));
 }
 
 static void
index a6f2559b1df003f25c0364a8dc631733e0805a63..0351490df24f1aea93df02800240900c711673ff 100644 (file)
@@ -44,21 +44,16 @@ G_DEFINE_INTERFACE (GtkShortcutManager, gtk_shortcut_manager, G_TYPE_OBJECT)
 void
 gtk_shortcut_manager_create_controllers (GtkWidget *widget)
 {
-  GListStore *store;
   GtkFlattenListModel *model;
   GtkEventController *controller;
 
-  store = g_list_store_new (GTK_TYPE_SHORTCUT_CONTROLLER);
-  model = gtk_flatten_list_model_new (G_LIST_MODEL (store));
-  g_object_unref (store);
+  model = gtk_flatten_list_model_new (G_LIST_MODEL (g_list_store_new (GTK_TYPE_SHORTCUT_CONTROLLER)));
   g_object_set_data_full (G_OBJECT (widget), "gtk-shortcut-manager-bubble", model, g_object_unref);
   controller = gtk_shortcut_controller_new_for_model (G_LIST_MODEL (model));
   gtk_event_controller_set_name (controller, "gtk-shortcut-manager-bubble");
   gtk_widget_add_controller (widget, controller);
 
-  store = g_list_store_new (GTK_TYPE_SHORTCUT_CONTROLLER);
-  model = gtk_flatten_list_model_new (G_LIST_MODEL (store));
-  g_object_unref (store);
+  model = gtk_flatten_list_model_new (G_LIST_MODEL (g_list_store_new (GTK_TYPE_SHORTCUT_CONTROLLER)));
   g_object_set_data_full (G_OBJECT (widget), "gtk-shortcut-manager-capture", model, g_object_unref);
   controller = gtk_shortcut_controller_new_for_model (G_LIST_MODEL (model));
   gtk_event_controller_set_name (controller, "gtk-shortcut-manager-capture");
index a8fa4340ed7e073f562e2e56ff1c10edf8b376a4..5c4bab15b5bd39ed2989455f020ba40a535b782a 100644 (file)
@@ -260,7 +260,6 @@ gtk_inspector_controllers_set_object (GtkInspectorControllers *self,
 
   g_object_unref (sort_model);
   g_object_unref (flatten_model);
-  g_object_unref (map_model);
 }
 
 static void
index 3c41bfd432b874217d3886b61b1ca50d24316bdc..bd2585b06b00ac5710efd2410c57d5ac46902431 100644 (file)
@@ -116,7 +116,6 @@ static GListModel *
 object_tree_widget_get_children (GObject *object)
 {
   GtkWidget *widget = GTK_WIDGET (object);
-  GtkFlattenListModel *flatten;
   GListStore *list;
   GListModel *sublist;
 
@@ -130,10 +129,7 @@ object_tree_widget_get_children (GObject *object)
   g_list_store_append (list, sublist);
   g_object_unref (sublist);
 
-  flatten = gtk_flatten_list_model_new (G_LIST_MODEL (list));
-  g_object_unref (list);
-
-  return G_LIST_MODEL (flatten);
+  return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (list)));
 }
 
 static GListModel *
@@ -211,7 +207,6 @@ list_model_for_properties (GObject     *object,
                            const char **props)
 {
   GListStore *concat;
-  GListModel *result;
   guint i;
 
   if (props[1] == NULL)
@@ -225,9 +220,7 @@ list_model_for_properties (GObject     *object,
       g_object_unref (tmp);
     }
 
-  result = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (concat)));
-  g_object_unref (concat);
-  return result;
+  return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (concat)));
 }
 
 static GListModel *
@@ -310,7 +303,6 @@ object_tree_tree_view_get_children (GObject *object)
   GtkTreeView *treeview = GTK_TREE_VIEW (object);
   GListStore *columns, *selection, *result_list;
   GListModel *props;
-  GtkFlattenListModel *result;
   guint i;
 
   props = list_model_for_properties (object, (const char *[2]) { "model", NULL });
@@ -330,10 +322,8 @@ object_tree_tree_view_get_children (GObject *object)
   g_object_unref (selection);
   g_list_store_append (result_list, columns);
   g_object_unref (columns);
-  result = gtk_flatten_list_model_new (G_LIST_MODEL (result_list));
-  g_object_unref (result_list);
 
-  return G_LIST_MODEL (result);
+  return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (result_list)));
 }
 
 static GListModel *
@@ -341,7 +331,6 @@ object_tree_column_view_get_children (GObject *object)
 {
   GtkColumnView *view = GTK_COLUMN_VIEW (object);
   GListStore *result_list;
-  GtkFlattenListModel *result;
   GListModel *columns, *sublist;
 
   result_list = g_list_store_new (G_TYPE_LIST_MODEL);
@@ -353,10 +342,7 @@ object_tree_column_view_get_children (GObject *object)
   g_list_store_append (result_list, sublist);
   g_object_unref (sublist);
 
-  result = gtk_flatten_list_model_new (G_LIST_MODEL (result_list));
-  g_object_unref (result_list);
-
-  return G_LIST_MODEL (result);
+  return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (result_list)));
 }
 
 static GListModel *
@@ -602,12 +588,11 @@ static GListModel *
 object_get_children (GObject *object)
 {
   GType object_type;
-  GListModel *result, *children;
+  GListModel *children;
   GListStore *result_list;
   guint i;
 
   object_type = G_OBJECT_TYPE (object);
-  result = NULL;
   result_list = NULL;
 
   for (i = 0; i < G_N_ELEMENTS (object_tree_class_funcs); i++)
@@ -619,32 +604,17 @@ object_get_children (GObject *object)
       if (children == NULL)
         continue;
 
-      if (result_list)
-        {
-          g_list_store_append (result_list, children);
-          g_object_unref (children);
-        }
-      else if (result == NULL)
-        {
-          result = children;
-        }
-      else
-        {
-          result_list = g_list_store_new (G_TYPE_LIST_MODEL);
-          g_list_store_append (result_list, result);
-          g_object_unref (result);
-          g_list_store_append (result_list, children);
-          g_object_unref (children);
-        }
-    }
+      if (!result_list)
+        result_list = g_list_store_new (G_TYPE_LIST_MODEL);
 
-  if (result_list)
-    {
-      result = G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (result_list)));
-      g_object_unref (result_list);
+      g_list_store_append (result_list, children);
+      g_object_unref (children);
     }
 
-  return result;
+  if (result_list)
+    return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (result_list)));
+  else
+    return NULL;
 }
 
 static const char *
@@ -1167,7 +1137,6 @@ create_root_model (GdkDisplay *display)
 {
   GtkFilter *custom_filter;
   GtkFilterListModel *filter;
-  GtkFlattenListModel *flatten;
   GListStore *list, *special;
   gpointer item;
 
@@ -1189,9 +1158,7 @@ create_root_model (GdkDisplay *display)
   g_list_store_append (list, filter);
   g_object_unref (filter);
 
-  flatten = gtk_flatten_list_model_new (G_LIST_MODEL (list));
-  g_object_unref (list);
-  return G_LIST_MODEL (flatten);
+  return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (list)));
 }
 
 static void
index 19bec198a339e178812b271595678aead15afcaf..12b9bedb5555c7517b6d0c8ad0ea681b2dbbd522 100644 (file)
@@ -443,8 +443,6 @@ test_model_changes (gconstpointer model_id)
   g_object_unref (model2);
   g_object_unref (flatten2);
   g_object_unref (flatten1);
-  g_object_unref (store2);
-  g_object_unref (store1);
   g_object_unref (multi);
 }
 
index 12fc279d18b13a0192cfc9f1cde00da5c12d7bdd..3d71a27ecc41a36a7a4ff27d371a60a5cb43188a 100644 (file)
@@ -210,6 +210,8 @@ new_model (GListStore *store)
   GtkFlattenListModel *result;
   GString *changes;
 
+  if (store)
+    g_object_ref (store);
   result = gtk_flatten_list_model_new (G_LIST_MODEL (store));
   changes = g_string_new ("");
   g_object_set_qdata_full (G_OBJECT(result), changes_quark, changes, free_changes);
index 519df756ad8a177fee8934f7b4fb06095cdc75ba..049df6b295acb8ec522d35bad4941c764729fcd1 100644 (file)
@@ -433,7 +433,6 @@ test_stability (gconstpointer model_id)
   g_object_unref (sort2);
   g_object_unref (sort1);
   g_object_unref (flatten);
-  g_object_unref (store);
 }
 
 static void